package setvice;
import entity.User;
import Dao.UserDao;
import Dao.UserDaoimpl;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

public class UserServiceimpl implements UserService {
    UserDao userDao = new UserDaoimpl();
    /*
    用户登录
     */
    public boolean UserLogin(Integer id, String password) {
        User user = userDao.seekUserById(id);
        if (user != null && (user.getCall() == 1) && user.getId().equals(id) && user.getPassWord().equals(password)) {
            System.out.println("登录成功！");
            return true;
        } else {
            System.out.println("登录失败，id不存在或密码输入错误！");
            return false;
        }
    }
    /*
    管理员登录
     */
    @Override
    public boolean AdministratorLogin(Integer id, String password) {
        User user = userDao.seekUserById(id);
        if (user != null && user.getCall() == 2 && user.getId().equals(id) && user.getPassWord().equals(password)) {
            System.out.println("登录成功！");
            return true;
        }
        else {
            System.out.println("登录失败，id不存在或密码输入错误！");
            return false;
        }
    }
    /*
    用户注册
     */
    @Override
    public boolean registerUser(User user) {
        User user1=userDao.seekUserById(user.getId());
        if (user1==null){
            userDao.insertUser(user);
            System.out.println("恭喜注册成功！");
            return true;
        } else{
            System.out.println("用户已存在,注册失败！");
            return false;
        }
    }
    /*
    管理员操作
     */
    @Override
    public User seekUserById(Integer id) {
        User user=userDao.seekUserById(id);
        if (user!=null){
            return user;
        }else {
            System.out.println("用户不存在");
            return null;
        }
    }

    /*
    管理员可以进行的操作
     */
    public boolean insertUser(User user){
        User user1=userDao.seekUserById(user.getId());
        if (user1==null){
            userDao.insertUser(user);
            System.out.println("添加成功！");
            return true;
        }else {
            System.out.println("用户已存在，添加失败！");
            return false;
        }
    }
    /*
    管理员可以进行的操作
     */
    public boolean deleteUserById(Integer id) {
        User user=userDao.seekUserById(id);
        if (user!=null){
            userDao.deleteUserById(id);
            System.out.println("删除成功！");
            return true;
        }else {
            System.out.println("用户不存在，删除失败！");
            return false;
        }
    }
    /*
    管理员可以进行的操作
     */
    public boolean changeUserInformationById(Integer id,User user) {
        User user1=userDao.seekUserById(id);
        if (user1!=null){
            userDao.changeUserInformationById(id,user);
            System.out.println("更改成功！");
            return true;
        }else {
            System.out.println("用户不存在，更改失败！");
            return false;
        }
    }
    /*
    管理员可以进行的操作
     */
    @Override
    public List<User> seekAllUser() {
        List<User> userList=userDao.seekAllUser();
        if (userList!=null){
            return userList;
        }else{
            System.out.println("无用户！");
            return null;
        }
    }
    /*
    管理员可以进行的操作
     */
    public User selectUserByUserName(String userName) {
        User user=userDao.seekUserByUserName(userName);
        if (user!=null){
            return user;
        }else {
            System.out.println("用户不存在，查询失败！");
            return null;
        }
    }
    /*
    管理员可以进行的操作
     */
    public User seekUserByUserName(String userName) {
        try{
            BufferedReader bufferedReader=new BufferedReader(new FileReader("UniversityCourseSelectionSystem\\User.txt"));
            List<User> userList=new ArrayList<>();
            String string;
            while ((string=bufferedReader.readLine())!=null){
                String[] dates=string.split(",");
                User user=new User(Integer.parseInt(dates[0]),dates[1],dates[2],dates[3],dates[4],Integer.parseInt(dates[5]));
                userList.add(user);
            }
            for (int i = 0; i < userList.size(); i++) {
                User user=userList.get(i);
                if (user.getUserName().equals(userName)){
                    return user;
                }
            }
            bufferedReader.close();
        }catch (IOException e) {
            System.out.println("io异常，查询用户信息失败！");
        }
        return null;
    }
}
